%%
%% %CopyrightBegin%
%%
%% Copyright Hillside Technology Ltd. 2016. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%%     http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
%%
%% %CopyrightEnd%
%%

%% Decodes a WSDL 2.0 file.
%%
%% The model was created using erlsom, from a simplified version of the WSDL 2.0 xsd.
%% The XSD was simplified in order to make the prsing results easier to process, in 
%% priciple it should be equivalent to the original file. It is located in the priv
%% directory.
%%
%% > {ok, Model} = erlsom:compile_xsd_file("simplified_wsdl_2_0.xsd").
%% > erlsom:add_xsd_model(Model) 

-module(soap_decode_wsdl_2_0).

-export([decode/1, decode/2]).

decode(Xml) -> 
    decode(Xml, []).

decode(Xml, Options) -> 
    erlsom:scan(Xml, model(), Options).

model() ->
    {model,[{type,'_document',sequence,
              [{el,[{alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined},
                    {alt,description,description,[],1,1,true,undefined}],
                   1,1,undefined,3}],
              [],undefined,undefined,1,1,1,false,undefined},
        {type,'ExtensionElement',sequence,[],
              [{att,required,3,true,bool}],
              undefined,undefined,2,1,1,undefined,undefined},
        {type,allType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,3},
               {el,[{alt,'xsd:sequence',sequenceType,[],1,1,true,undefined},
                    {alt,'xsd:choice',choiceType,[],1,1,true,undefined},
                    {alt,'xsd:group',groupRefType,[],1,1,true,undefined},
                    {alt,'xsd:element',localElementType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,4}],
              [{att,minOccurs,5,true,char},{att,maxOccurs,6,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,5,1,1,false,undefined},
        {type,annotationType,sequence,
              [{el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,undefined,"##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,3}],
              [],
              {anyAttr,undefined,"##other",undefined},
              undefined,2,1,1,false,undefined},
        {type,anyAttributeType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,6}],
              [{att,id,3,true,char},
               {att,namespace,4,true,char},
               {att,processContents,5,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,5,1,1,false,undefined},
        {type,anyType,sequence,
              [{el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,undefined,"##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,3}],
              [{att,minOccurs,4,true,char},
               {att,maxOccurs,5,true,char},
               {att,namespace,6,true,char},
               {att,processContents,7,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,6,1,1,false,undefined},
        {type,attributeGroupDefType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,5},
               {el,[{alt,'xsd:attributeGroup',attributeGroupRefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',localAttributeType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6},
               {el,[{alt,'xsd:anyAttribute',anyAttributeType,[],1,1,true,
                         undefined}],
                   0,1,undefined,7}],
              [{att,id,3,true,char},{att,name,4,false,ascii}],
              {anyAttr,undefined,"##other",undefined},
              undefined,6,1,1,false,undefined},
        {type,attributeGroupRefType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,2}],
              [{att,ref,3,true,qname},{att,id,4,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,3,1,1,false,undefined},
        {type,binding,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,7},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined},
                    {alt,fault,bindingFault,[],1,1,true,undefined},
                    {alt,operation,bindingOperation,[],1,1,true,undefined}],
                   0,unbound,undefined,8}],
              [{att,location,3,true,char},
               {att,name,4,false,char},
               {att,type,5,false,char},
               {att,interface,6,false,qname}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,7,1,1,undefined,undefined},
        {type,bindingFault,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,4},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,5}],
              [{att,ref,3,false,qname}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,4,1,1,undefined,undefined},
        {type,bindingOperation,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined},
                    {alt,infault,'bindingOperation-infault',[],1,1,true,
                         undefined},
                    {alt,input,'bindingOperation-input',[],1,1,true,undefined},
                    {alt,outfault,'bindingOperation-outfault',[],1,1,true,
                         undefined},
                    {alt,output,'bindingOperation-output',[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,location,3,true,char},{att,ref,4,false,qname}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,'bindingOperation-infault',sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,ref,3,false,qname},{att,messageLabel,4,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,'bindingOperation-input',sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,4},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,5}],
              [{att,messageLabel,3,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,4,1,1,undefined,undefined},
        {type,'bindingOperation-outfault',sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,ref,3,false,qname},{att,messageLabel,4,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,'bindingOperation-output',sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,4},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,5}],
              [{att,messageLabel,3,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,4,1,1,undefined,undefined},
        {type,bindingOperationFault,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,ref,3,false,qname},{att,messageLabel,4,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,bindingOperationMessage,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,4},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,5}],
              [{att,messageLabel,3,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,4,1,1,undefined,undefined},
        {type,choiceType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,3},
               {el,[{alt,'xsd:any',anyType,[],1,1,true,undefined},
                    {alt,'xsd:sequence',sequenceType,[],1,1,true,undefined},
                    {alt,'xsd:choice',choiceType,[],1,1,true,undefined},
                    {alt,'xsd:group',groupRefType,[],1,1,true,undefined},
                    {alt,'xsd:element',localElementType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,7}],
              [{att,id,6,true,char},
               {att,minOccurs,4,true,char},
               {att,maxOccurs,5,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,6,1,1,false,undefined},
        {type,complexContentType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,3},
               {el,[{alt,'xsd:restriction',restrictionTypeC,[],1,1,true,
                         undefined},
                    {alt,'xsd:extension',extensionTypeC,[],1,1,true,
                         undefined}],
                   1,1,undefined,4}],
              [{att,mixed,5,true,bool}],
              {anyAttr,undefined,"##other",undefined},
              undefined,4,1,1,false,undefined},
        {type,description,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,import,import,[],1,1,true,undefined}],
                   0,unbound,undefined,6},
               {el,[{alt,include,include,[],1,1,true,undefined}],
                   0,unbound,undefined,7},
               {el,[{alt,types,types,[],1,1,true,undefined}],0,1,undefined,8},
               {el,[{alt,interface,wsdl_interface,[],1,1,true,undefined}],
                   0,unbound,undefined,9},
               {el,[{alt,binding,binding,[],1,1,true,undefined}],
                   0,unbound,undefined,10},
               {el,[{alt,service,service,[],1,1,true,undefined}],
                   0,unbound,undefined,11}],
              [{att,name,3,true,char},{att,targetNamespace,4,false,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,10,1,1,undefined,undefined},
        {type,documentation,sequence,
              [{el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##any","http://www.w3.org/ns/wsdl"}}],
                   0,unbound,undefined,3}],
              [],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,2,1,1,true,undefined},
        {type,endpoint,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,6},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,7}],
              [{att,name,3,false,char},
               {att,binding,4,false,qname},
               {att,address,5,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,6,1,1,undefined,undefined},
        {type,extensionType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,4},
               {el,[{alt,'xsd:attributeGroup',attributeGroupRefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',localAttributeType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,5},
               {el,[{alt,'xsd:anyAttribute',anyAttributeType,[],1,1,true,
                         undefined}],
                   0,1,undefined,6}],
              [{att,base,3,false,qname}],
              {anyAttr,undefined,"##other",undefined},
              undefined,5,1,1,false,undefined},
        {type,extensionTypeC,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,4},
               {el,[{alt,'xsd:all',allType,[],1,1,true,undefined},
                    {alt,'xsd:group',groupRefType,[],1,1,true,undefined},
                    {alt,'xsd:choice',choiceType,[],1,1,true,undefined},
                    {alt,'xsd:sequence',sequenceType,[],1,1,true,undefined},
                    {alt,'xsd:all',allType,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'xsd:attributeGroup',attributeGroupRefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',localAttributeType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6},
               {el,[{alt,'xsd:anyAttribute',anyAttributeType,[],1,1,true,
                         undefined}],
                   0,1,undefined,7}],
              [{att,base,3,false,qname}],
              {anyAttr,undefined,"##other",undefined},
              undefined,6,1,1,false,undefined},
        {type,globalAttributeType,sequence,
              [{el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,undefined,"##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,9}],
              [{att,name,3,false,ascii},
               {att,type,4,true,qname},
               {att,use,5,true,char},
               {att,fixed,6,true,char},
               {att,default,7,true,char},
               {att,id,8,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,8,1,1,false,undefined},
        {type,globalComplexTypeType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,9},
               {el,[{alt,'xsd:sequence',sequenceType,[],1,1,true,undefined},
                    {alt,'xsd:choice',choiceType,[],1,1,true,undefined},
                    {alt,'xsd:all',allType,[],1,1,true,undefined},
                    {alt,'xsd:group',groupRefType,[],1,1,true,undefined},
                    {alt,'xsd:complexContent',complexContentType,[],1,1,true,
                         undefined},
                    {alt,'xsd:simpleContent',simpleContentType,[],1,1,true,
                         undefined}],
                   0,1,undefined,10},
               {el,[{alt,'xsd:attribute',localAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupRefType,[],1,1,
                         true,undefined}],
                   0,unbound,undefined,11},
               {el,[{alt,'xsd:anyAttribute',anyAttributeType,[],1,1,true,
                         undefined}],
                   0,1,undefined,12}],
              [{att,name,3,false,ascii},
               {att,final,4,true,char},
               {att,abstract,5,true,bool},
               {att,block,6,true,char},
               {att,mixed,7,true,bool},
               {att,id,8,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,11,1,1,false,undefined},
        {type,globalElementType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,12},
               {el,[{alt,'xsd:complexType',localComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:simpleType',localSimpleTypeType,[],1,1,true,
                         undefined}],
                   0,1,undefined,13},
               {el,[{alt,'xsd:keyref',ignoreType,[],1,1,true,undefined},
                    {alt,'xsd:key',ignoreType,[],1,1,true,undefined},
                    {alt,'xsd:unique',ignoreType,[],1,1,true,undefined}],
                   0,unbound,undefined,14}],
              [{att,name,3,false,ascii},
               {att,type,4,true,qname},
               {att,default,5,true,char},
               {att,fixed,6,true,char},
               {att,id,7,true,char},
               {att,abstract,8,true,bool},
               {att,substitutionGroup,9,true,qname},
               {att,final,10,true,char},
               {att,nillable,11,true,bool}],
              {anyAttr,undefined,"##other",undefined},
              undefined,13,1,1,false,undefined},
        {type,globalSimpleTypeType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,undefined,"##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,name,3,false,ascii},{att,id,4,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,5,1,1,false,undefined},
        {type,groupDefType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,4},
               {el,[{alt,'xsd:sequence',sequenceType,[],1,1,true,undefined},
                    {alt,'xsd:choice',choiceType,[],1,1,true,undefined},
                    {alt,'xsd:all',allType,[],1,1,true,undefined}],
                   0,1,undefined,5}],
              [{att,name,3,false,ascii}],
              {anyAttr,undefined,"##other",undefined},
              undefined,4,1,1,false,undefined},
        {type,groupRefType,sequence,[],
              [{att,ref,3,false,qname},
               {att,minOccurs,4,true,char},
               {att,maxOccurs,5,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,4,1,1,false,undefined},
        {type,ignoreType,sequence,
              [{el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,undefined,"##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,3}],
              [],
              {anyAttr,undefined,"##any",undefined},
              undefined,2,1,1,false,undefined},
        {type,import,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,namespace,3,false,char},{att,location,4,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,importType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,6}],
              [{att,id,3,true,char},
               {att,namespace,4,true,char},
               {att,schemaLocation,5,true,char}],
              undefined,undefined,5,1,1,false,undefined},
        {type,include,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,4},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,5}],
              [{att,location,3,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,4,1,1,undefined,undefined},
        {type,includeType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,5}],
              [{att,id,3,true,char},{att,schemaLocation,4,false,char}],
              undefined,undefined,4,1,1,false,undefined},
        {type,interfaceFault,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,name,3,false,char},{att,element,4,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,interfaceOperation,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,7},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined},
                    {alt,infault,'interfaceOperation-infault',[],1,1,true,
                         undefined},
                    {alt,input,'interfaceOperation-input',[],1,1,true,
                         undefined},
                    {alt,outfault,'interfaceOperation-outfault',[],1,1,true,
                         undefined},
                    {alt,output,'interfaceOperation-output',[],1,1,true,
                         undefined}],
                   0,unbound,undefined,8}],
              [{att,name,3,false,char},
               {att,pattern,4,true,char},
               {att,safe,5,true,bool},
               {att,style,6,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,7,1,1,undefined,undefined},
        {type,'interfaceOperation-infault',sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,ref,3,false,qname},{att,messageLabel,4,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,'interfaceOperation-input',sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,messageLabel,3,true,char},{att,element,4,true,qname}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,'interfaceOperation-outfault',sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,ref,3,false,qname},{att,messageLabel,4,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,'interfaceOperation-output',sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,messageLabel,3,true,char},{att,element,4,true,qname}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,localAttributeType,sequence,
              [{el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,undefined,"##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,10}],
              [{att,name,3,true,ascii},
               {att,type,4,true,qname},
               {att,use,5,true,char},
               {att,ref,6,true,qname},
               {att,fixed,7,true,char},
               {att,form,8,true,char},
               {att,default,9,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,9,1,1,false,undefined},
        {type,localComplexTypeType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,4},
               {el,[{alt,'xsd:sequence',sequenceType,[],1,1,true,undefined},
                    {alt,'xsd:choice',choiceType,[],1,1,true,undefined},
                    {alt,'xsd:all',allType,[],1,1,true,undefined},
                    {alt,'xsd:complexContent',complexContentType,[],1,1,true,
                         undefined},
                    {alt,'xsd:group',groupRefType,[],1,1,true,undefined},
                    {alt,'xsd:simpleContent',simpleContentType,[],1,1,true,
                         undefined}],
                   0,1,undefined,5},
               {el,[{alt,'xsd:attribute',localAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupRefType,[],1,1,
                         true,undefined}],
                   0,unbound,undefined,6},
               {el,[{alt,'xsd:anyAttribute',anyAttributeType,[],1,1,true,
                         undefined}],
                   0,1,undefined,7}],
              [{att,mixed,3,true,bool}],
              {anyAttr,undefined,"##other",undefined},
              undefined,6,1,1,false,undefined},
        {type,localElementType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,12},
               {el,[{alt,'xsd:complexType',localComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:simpleType',localSimpleTypeType,[],1,1,true,
                         undefined}],
                   0,1,undefined,13},
               {el,[{alt,'xsd:keyref',ignoreType,[],1,1,true,undefined},
                    {alt,'xsd:key',ignoreType,[],1,1,true,undefined},
                    {alt,'xsd:unique',ignoreType,[],1,1,true,undefined}],
                   0,unbound,undefined,14}],
              [{att,name,3,true,ascii},
               {att,type,4,true,qname},
               {att,default,5,true,char},
               {att,fixed,6,true,char},
               {att,form,7,true,char},
               {att,ref,8,true,qname},
               {att,minOccurs,9,true,char},
               {att,maxOccurs,10,true,char},
               {att,nillable,11,true,bool}],
              {anyAttr,undefined,"##other",undefined},
              undefined,13,1,1,false,undefined},
        {type,localSimpleTypeType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,3},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,undefined,"##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,4}],
              [],
              {anyAttr,undefined,"##other",undefined},
              undefined,3,1,1,false,undefined},
        {type,messageRef,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,messageLabel,3,true,char},{att,element,4,true,qname}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,messageRefFault,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6}],
              [{att,ref,3,false,qname},{att,messageLabel,4,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,redefineType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:group',groupDefType,[],1,1,true,undefined},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,5}],
              [{att,id,3,true,char},{att,schemaLocation,4,false,char}],
              undefined,undefined,4,1,1,false,undefined},
        {type,restrictionType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,3},
               {el,[{alt,'#any',any,
                         ['xsd:attribute','xsd:attributeGroup',
                          'xsd:anyAttribute'],
                         1,1,true,
                         {anyInfo,undefined,"##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,4},
               {el,[{alt,'xsd:attributeGroup',attributeGroupRefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',localAttributeType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,5},
               {el,[{alt,'xsd:anyAttribute',anyAttributeType,[],1,1,true,
                         undefined}],
                   0,1,undefined,6}],
              [{att,base,7,false,qname}],
              {anyAttr,undefined,"##other",undefined},
              undefined,6,1,1,false,undefined},
        {type,restrictionTypeC,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,4},
               {el,[{alt,'xsd:all',allType,[],1,1,true,undefined},
                    {alt,'xsd:group',groupRefType,[],1,1,true,undefined},
                    {alt,'xsd:choice',choiceType,[],1,1,true,undefined},
                    {alt,'xsd:sequence',sequenceType,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'xsd:attributeGroup',attributeGroupRefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',localAttributeType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,6},
               {el,[{alt,'xsd:anyAttribute',anyAttributeType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,7}],
              [{att,base,3,false,qname}],
              {anyAttr,undefined,"##other",undefined},
              undefined,6,1,1,false,undefined},
        {type,schemaType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined},
                    {alt,'xsd:redefine',redefineType,[],1,1,true,undefined},
                    {alt,'xsd:include',includeType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined}],
                   0,unbound,undefined,10},
               {el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:group',groupDefType,[],1,1,true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,11}],
              [{att,targetNamespace,3,true,char},
               {att,elementFormDefault,4,true,char},
               {att,attributeFormDefault,5,true,char},
               {att,blockDefault,6,true,char},
               {att,finalDefault,7,true,char},
               {att,version,8,true,char},
               {att,id,9,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,10,1,1,false,undefined},
        {type,sequenceType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,3},
               {el,[{alt,'xsd:sequence',sequenceType,[],1,1,true,undefined},
                    {alt,'xsd:choice',choiceType,[],1,1,true,undefined},
                    {alt,'xsd:any',anyType,[],1,1,true,undefined},
                    {alt,'xsd:group',groupRefType,[],1,1,true,undefined},
                    {alt,'xsd:element',localElementType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,4}],
              [{att,minOccurs,5,true,char},{att,maxOccurs,6,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,5,1,1,false,undefined},
        {type,service,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,5},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined},
                    {alt,endpoint,endpoint,[],1,1,true,undefined}],
                   1,unbound,undefined,6}],
              [{att,name,3,false,char},{att,interface,4,false,qname}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,5,1,1,undefined,undefined},
        {type,simpleContentType,sequence,
              [{el,[{alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,1,undefined,3},
               {el,[{alt,'xsd:restriction',restrictionType,[],1,1,true,
                         undefined},
                    {alt,'xsd:extension',extensionType,[],1,1,true,undefined}],
                   1,1,undefined,4}],
              [{att,id,5,true,char}],
              {anyAttr,undefined,"##other",undefined},
              undefined,4,1,1,false,undefined},
        {type,types,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,4},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",
                                  "http://www.w3.org/ns/wsdl"}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined}],
                   0,unbound,undefined,5}],
              [{att,location,3,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,4,1,1,undefined,undefined},
        {type,wsdl_interface,sequence,
              [{el,[{alt,documentation,documentation,[],1,1,true,undefined}],
                   0,1,undefined,6},
               {el,[{alt,'#any',any,[],1,1,true,
                         {anyInfo,"lax","##other",undefined}},
                    {alt,'xsd:simpleType',globalSimpleTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:schema',schemaType,[],1,1,true,undefined},
                    {alt,'xsd:import',importType,[],1,1,true,undefined},
                    {alt,'xsd:element',globalElementType,[],1,1,true,
                         undefined},
                    {alt,'xsd:complexType',globalComplexTypeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:attributeGroup',attributeGroupDefType,[],1,1,
                         true,undefined},
                    {alt,'xsd:attribute',globalAttributeType,[],1,1,true,
                         undefined},
                    {alt,'xsd:annotation',annotationType,[],1,1,true,
                         undefined},
                    {alt,fault,interfaceFault,[],1,1,true,undefined},
                    {alt,operation,interfaceOperation,[],1,1,true,undefined}],
                   0,unbound,undefined,7}],
              [{att,name,3,false,char},
               {att,extends,4,true,char},
               {att,styleDefault,5,true,char}],
              {anyAttr,"lax","##other","http://www.w3.org/ns/wsdl"},
              undefined,6,1,1,undefined,undefined}],
       [{ns,"http://www.w3.org/2001/XMLSchema","xsd",qualified},
        {ns,"http://www.w3.org/ns/wsdl",undefined,qualified}],
       "http://www.w3.org/ns/wsdl",[],true,skip}.
